package com.molichuxing.services.contants;

import com.molichuxing.services.property.OrderExclusivelStatusEnum;
import com.molichuxing.services.property.OrderSubscribeStatusEnum;

import java.util.Arrays;
import java.util.List;

/**
 * 订单状态常量
 *
 * @author zoumingyu
 * @date 2019年9月30日
 */
public class OrderStatusConst {

    /**
     * 专属订单状态-交易列表
     */
    public static final List<OrderExclusivelStatusEnum> TRADE_EXCLUSIVEL_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.TRADE_UNPAID, OrderExclusivelStatusEnum.TRADE_CANCELED,
            OrderExclusivelStatusEnum.TRADE_UNDELIVERY, OrderExclusivelStatusEnum.TRADE_USE);

    /**
     * 专属订单状态-征信审核列表全部
     */
    public static final List<OrderExclusivelStatusEnum> CREDIT_EXCLUSIVEL_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.TRADE_UNAUDIT, OrderExclusivelStatusEnum.TRADE_REJECTED,
            OrderExclusivelStatusEnum.TRADE_CREDIT_UNAUDIT,
            OrderExclusivelStatusEnum.TRADE_REFUND, OrderExclusivelStatusEnum.TRADE_FINISH,
            OrderExclusivelStatusEnum.TRADE_UNDELIVERY, OrderExclusivelStatusEnum.TRADE_USE,
            OrderExclusivelStatusEnum.RENEGE_ACCEPTED, OrderExclusivelStatusEnum.RENEGE_SETTLEMENT,
            OrderExclusivelStatusEnum.RENEGE_REFUND, OrderExclusivelStatusEnum.RENEGE_UNPAID,
            OrderExclusivelStatusEnum.RENEGE_FINISH);

    /**
     * 专属订单状态-征信审核通过
     */
    public static final List<OrderExclusivelStatusEnum> CREDIT_PASS_EXCLUSIVEL_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.TRADE_UNDELIVERY, OrderExclusivelStatusEnum.TRADE_USE,
            OrderExclusivelStatusEnum.RENEGE_ACCEPTED, OrderExclusivelStatusEnum.RENEGE_SETTLEMENT,
            OrderExclusivelStatusEnum.RENEGE_REFUND, OrderExclusivelStatusEnum.RENEGE_UNPAID,
            OrderExclusivelStatusEnum.RENEGE_FINISH);

    /**
     * 专属订单状态-征信审核驳回
     */
    public static final List<OrderExclusivelStatusEnum> CREDIT_REJECT_EXCLUSIVEL_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.TRADE_REJECTED, OrderExclusivelStatusEnum.TRADE_REFUND,
            OrderExclusivelStatusEnum.TRADE_FINISH);

    /**
     * 专属订单状态-提前退租
     */
    public static final List<OrderExclusivelStatusEnum> RENEGE_EXCLUSIVEL_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.RENEGE_ACCEPTED, OrderExclusivelStatusEnum.RENEGE_SETTLEMENT,
            OrderExclusivelStatusEnum.RENEGE_REFUND, OrderExclusivelStatusEnum.RENEGE_UNPAID,
            OrderExclusivelStatusEnum.RENEGE_FINISH);

    /**
     * 专属订单状态-未用车订单
     */
    public static final List<OrderExclusivelStatusEnum> EXCLUSIVEL_UNUSED_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.TRADE_UNPAID, OrderExclusivelStatusEnum.TRADE_CANCELED,
            OrderExclusivelStatusEnum.TRADE_UNAUDIT, OrderExclusivelStatusEnum.TRADE_UNDELIVERY,
            OrderExclusivelStatusEnum.TRADE_REJECTED, OrderExclusivelStatusEnum.TRADE_REFUND,
            OrderExclusivelStatusEnum.TRADE_FINISH);

    /**
     * 专属订单状态-生效订单（已使用过车辆订单）
     */
    public static final List<OrderExclusivelStatusEnum> EXCLUSIVEL_EFFECTIVE_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.TRADE_USE, OrderExclusivelStatusEnum.RENEGE_ACCEPTED,
            OrderExclusivelStatusEnum.RENEGE_SETTLEMENT, OrderExclusivelStatusEnum.RENEGE_REFUND,
            OrderExclusivelStatusEnum.RENEGE_UNPAID, OrderExclusivelStatusEnum.RENEGE_FINISH);

    /**
     * 专属订单状态-未还车订单
     */
    public static final List<OrderExclusivelStatusEnum> EXCLUSIVEL_UNRETURN_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.TRADE_USE, OrderExclusivelStatusEnum.RENEGE_ACCEPTED);

    /**
     * 专属订单状态-已还车订单
     */
    public static final List<OrderExclusivelStatusEnum> EXCLUSIVEL_RETURN_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.RENEGE_SETTLEMENT, OrderExclusivelStatusEnum.RENEGE_REFUND,
            OrderExclusivelStatusEnum.RENEGE_UNPAID, OrderExclusivelStatusEnum.RENEGE_FINISH);

    /**
     * 专属订单状态-诉讼
     */
    public static final List<OrderExclusivelStatusEnum> LAWSUIT_EXCLUSIVEL_STATUS = Arrays.asList(
            OrderExclusivelStatusEnum.LAWSUIT);

    /**
     * 订阅订单状态-交易列表
     */
    public static final List<OrderSubscribeStatusEnum> TRADE_SUBSCRIBE_STATUS = Arrays.asList(
            OrderSubscribeStatusEnum.TRADE_UNPAID, OrderSubscribeStatusEnum.TRADE_CANCELED,
            OrderSubscribeStatusEnum.TRADE_UNDELIVERY, OrderSubscribeStatusEnum.TRADE_USE,
            OrderSubscribeStatusEnum.TRADE_UNUSE);

    /**
     * 订阅订单状态-征信审核列表全部
     */
    public static final List<OrderSubscribeStatusEnum> CREDIT_SUBSCRIBE_STATUS = Arrays.asList(
            OrderSubscribeStatusEnum.TRADE_UNAUDIT, OrderSubscribeStatusEnum.TRADE_REJECTED,
            OrderSubscribeStatusEnum.TRADE_REFUND, OrderSubscribeStatusEnum.TRADE_FINISH,
            OrderSubscribeStatusEnum.TRADE_UNDELIVERY, OrderSubscribeStatusEnum.TRADE_USE,
            OrderSubscribeStatusEnum.TRADE_UNUSE, OrderSubscribeStatusEnum.RETURN_UNINSPECTED,
            OrderSubscribeStatusEnum.RETURN_UNCONFIRM, OrderSubscribeStatusEnum.RETURN_INTERVENE,
            OrderSubscribeStatusEnum.RETURN_UNPAID, OrderSubscribeStatusEnum.RETURN_FINISH);

    /**
     * 订阅订单状态-征信审核通过
     */
    public static final List<OrderSubscribeStatusEnum> CREDIT_PASS_SUBSCRIBE_STATUS = Arrays.asList(
            OrderSubscribeStatusEnum.TRADE_UNDELIVERY, OrderSubscribeStatusEnum.TRADE_USE,
            OrderSubscribeStatusEnum.TRADE_UNUSE, OrderSubscribeStatusEnum.RETURN_UNINSPECTED,
            OrderSubscribeStatusEnum.RETURN_UNCONFIRM, OrderSubscribeStatusEnum.RETURN_INTERVENE,
            OrderSubscribeStatusEnum.RETURN_UNPAID, OrderSubscribeStatusEnum.RETURN_FINISH);

    /**
     * 订阅订单状态-征信审核驳回
     */
    public static final List<OrderSubscribeStatusEnum> CREDIT_REJECT_SUBSCRIBE_STATUS = Arrays.asList(
            OrderSubscribeStatusEnum.TRADE_REJECTED, OrderSubscribeStatusEnum.TRADE_REFUND,
            OrderSubscribeStatusEnum.TRADE_FINISH);

    /**
     * 订阅订单状态-到期还车
     */
    public static final List<OrderSubscribeStatusEnum> RETURN_SUBSCRIBE_STATUS = Arrays.asList(
            OrderSubscribeStatusEnum.RETURN_UNINSPECTED, OrderSubscribeStatusEnum.RETURN_UNCONFIRM,
            OrderSubscribeStatusEnum.RETURN_INTERVENE, OrderSubscribeStatusEnum.RETURN_UNPAID,
            OrderSubscribeStatusEnum.RETURN_FINISH);

    /**
     * 订阅订单状态-未用车订单
     */
    public static final List<OrderSubscribeStatusEnum> SUBSCRIBE_UNUSED_STATUS = Arrays.asList(
            OrderSubscribeStatusEnum.TRADE_UNPAID, OrderSubscribeStatusEnum.TRADE_CANCELED,
            OrderSubscribeStatusEnum.TRADE_UNAUDIT, OrderSubscribeStatusEnum.TRADE_UNDELIVERY,
            OrderSubscribeStatusEnum.TRADE_UNUSE, OrderSubscribeStatusEnum.TRADE_REJECTED,
            OrderSubscribeStatusEnum.TRADE_REFUND, OrderSubscribeStatusEnum.TRADE_FINISH);

    /**
     * 订阅订单状态-用车中订单
     */
    public static final List<OrderSubscribeStatusEnum> SUBSCRIBE_USED_STATUS = Arrays
            .asList(OrderSubscribeStatusEnum.TRADE_USE);

    /**
     * 订阅订单状态-生效订单（已使用过车辆订单）
     */
    public static final List<OrderSubscribeStatusEnum> SUBSCRIBE_EFFECTIVE_STATUS = Arrays.asList(
            OrderSubscribeStatusEnum.TRADE_USE, OrderSubscribeStatusEnum.RETURN_UNINSPECTED,
            OrderSubscribeStatusEnum.RETURN_UNCONFIRM, OrderSubscribeStatusEnum.RETURN_INTERVENE,
            OrderSubscribeStatusEnum.RETURN_UNPAID, OrderSubscribeStatusEnum.RETURN_FINISH);

    /**
     * 订阅订单状态-未还车订单
     */
    public static final List<OrderSubscribeStatusEnum> SUBSCRIBE_UNRETURN_STATUS = Arrays.asList(
            OrderSubscribeStatusEnum.TRADE_USE);

    /**
     * 订阅订单状态-已还车订单
     */
    public static final List<OrderSubscribeStatusEnum> SUBSCRIBE_RETURN_STATUS = Arrays.asList(
            OrderSubscribeStatusEnum.RETURN_UNINSPECTED,
            OrderSubscribeStatusEnum.RETURN_UNCONFIRM, OrderSubscribeStatusEnum.RETURN_INTERVENE,
            OrderSubscribeStatusEnum.RETURN_UNPAID, OrderSubscribeStatusEnum.RETURN_FINISH);
}
